package tech.waterism.dto;

import io.swagger.annotations.ApiModel;
import io.swagger.annotations.ApiModelProperty;
import lombok.Data;

import java.util.Date;
import java.util.List;

@Data
@ApiModel(value = "拓扑结构Dto")
public class TopoDataDto {
    private Integer msid;
    /**
     * 拓扑对象
     */
    @ApiModelProperty(value = "拓扑对象")
    private List<TopoObjectDto> topoObject;

    /**
     * 联调对象
     */
    @ApiModelProperty(value = "联调对象")
    private List<DispatchObjectDto> dispatchObjects;

    /**
     * 调度任务剖面
     */
    @ApiModelProperty(value = "调度任务剖面")
    private List<DSectionDto> sections;

    /**
     * 预报日期
     */
    @ApiModelProperty(value = "预报日期")
    private Date fymdh;

    /**
     * 结束时间
     */
    @ApiModelProperty(value = "结束时间")
    private Date eymdh;

    /**
     * 开始时间
     */
    @ApiModelProperty(value = "开始时间")
    private Date symdh;

    /**
     * 修正日期
     */
    @ApiModelProperty(value = "修正日期")
    private Date mymdh;

    /**
     * 计算时段长
     */
    @ApiModelProperty(value = "计算时段长")
    private Integer clen;

    /**
     * 时段单位
     */
    @ApiModelProperty(value = "时段单位")
    private String unt;

    /**
     * 蓄滞洪区设备使用方式
     */
    @ApiModelProperty(value = "蓄滞洪区设备使用方式")
    private Integer spillWayType;

    /**
     * 三种工况：
     * 0、按天然出流：令出流等于入流
     * 1、维持当前出流不变
     * 2、按调度规则
     * 3、按反算出流
     */
    @ApiModelProperty(value = "三种工况")
    private Integer dispatchType;

    /**
     * 0: 龙格库塔 （默认）
     * 1：半图解法
     */
    @ApiModelProperty(value = "插值类型")
    private Integer outFlowType;

    /**
     * 调度方案注释
     */
    @ApiModelProperty(value = "调度方案注释")
    private DDispatchC dDispatchC;

    /**
     * 使用一维水动力计算
     */
    @ApiModelProperty(value = "使用一维水动力计算")
    private Boolean useHydro;

    /**
     * 一维水动力计算批次
     */
    @ApiModelProperty(value = "一维水动力计算批次")
    private String uuid;

    /**
     * 调度已失效
     */
    @ApiModelProperty(value = "调度已失效")
    private Boolean disabled;

    @ApiModelProperty(value = "备注")
    private String message;

    /**
     * 是否包含自动预报
     */
    @ApiModelProperty(value = "是否包含自动预报")
    private boolean auto;

    /**
     * 是否显示近3天预报成果
     */
    @ApiModelProperty(value = "是否显示近3天预报成果")
    private boolean inThreeDays;

    /**
     * 算法参数
     */
    @ApiModelProperty(value = "算法参数")
    private AlgorithmDispatch algorithm;

    /**
     * 算法名称-取反算算法comments
     */
    @ApiModelProperty(value = "算法名称")
    private String algorithmName;

    /**
     * 取水口用字段
     */
    @ApiModelProperty(value = "取水口用字段")
    private Object intakeData;

    /**
     * 设计洪水
     */
    @ApiModelProperty(value = "设计洪水")
    private DesignFloodDto designFlood;
    /**
     * 反向优化计算列表
     */
    private List<String> revOptUuidList;
    /**
     * 规则调度错误信息
     */
    @ApiModelProperty(value = "规则调度错误信息")
    private String ruleMessage;
}
